As is known in the art, random numbers may be generated using so-called “true” random number generators and pseudo random number generators. The true random number generators are typically based upon measurement of a physical phenomenon, which measurement is then processed to produce a random number. Examples include measurement of a roulette wheel (the RAND tables), thermal noise of an electron tube, difference in charges between two capacitors, movements of a hard disk drive, radio noise, human behavior, etc. A pseudo random number generator uses a computational algorithm to produce long runs of random numbers, and these generators use a numerical seed value in order to generate numbers.
When using pseudo random number generators (PRNG), generation of the seed is important to ensure independence and non-repeatability, especially for PRNGs executing on distributed processes, include those executing on different computing hardware. The concept of “independence” means independence from time, location, and other attributes of the computing hardware which is important to avoid weakness in the production of PRNG seeds and to avoid the possibility of creating the same or similar seed values on different computing hardware devices by accident or by engineered, deliberate means.
The concept of “non-repeatability” means that a PRNG will not be seeded with the same value even when attempts are made to duplicate all of the initial starting conditions on the computing hardware. The concept of “numerical dispersion” is also important in order to provide uniformly distributed input values for the PRNG seed in order to guard against input seed values that can be guessed or that are computationally predictable. Inferior seed generation techniques can produce seed values that are non-uniform and that even have localized groupings of values that can be exploited.
While efforts have been made in the past provide robust generation of seed values for pseudo random number generators, many of these methods are insufficient at providing independence and numerical dispersion. For example, seeds derived from host computer calendar and clock values, and seeds derived from attributes of the host computer can be insufficient. Attributes of the host computer that have been used include: CPU identification number, network interface controller addresses (MAC addresses), hardware component identification numbers, and other characteristics of installed hardware or running processes.
Given the insufficiency of current methods for generating seed values, an improved technique for generation of seed values for pseudo random number generators is desirable.